package com.lcy.algorithm.huawei;

import java.util.Scanner;

/**
 * 给定一个包含0和1的二维矩阵
 * 给定一个初始位置和速度
 * 一个物体从给定的初始位置触发,在给定的速度下进行移动，遇到矩阵的边缘则发生镜面反射
 * 无论物体经过0还是1,都不影响其速度
 * 请计算并给出经过t时间单位后，物体经过1点的次数
 * 递增(x)
 * |001000010000
 * |001000010000
 * |001000010000
 * |001000010000
 * |001000010000
 * |001000010000
 * |001000010000
 * 递增(y)
 * 注意:
 * 1.如果初始位置的点是1,也计算在内
 * 2.时间的最小单位为1,不考虑小于1个时间单位内经过的点
 * 输入描述:第一行为初始信息
 * <W> <h> <X> <y> <SX> <sy> <t>
 * 第二行开始一共h行, 为维矩阵信息
 * 其中
 * w, h为矩阵的宽和高
 * x, y为起始位置
 * sx, sy为初始速度
 * t为经过的时间
 * 所有输入都是有效的，数据范围如下
 * 0< w< 100
 * 0<h<100
 * 0 <=X< W
 * 0<=y< w
 * -1 <= Sx<=1
 * -1<=sy<=1
 * 0 <=t< 100
 * 输出描述:经过1的个数
 * 注意初始位置也要计算在内
 * <p>
 * <p>
 * 示例
 * 输入:12 7 2 1 1 -1 13
 * 001000010000
 * 001000010000
 * 001000010000
 * 001000010000
 * 001000010000
 * 001000010000
 * 001000010000
 * 输出:3
 * 说明:初始位置为(2, 1),速度为(1, -1), 那么13个时间单位后，经过点1的个数为3
 */
public class 反射计数 {
    public static final String BLANK = " ";
    /**
     * @param args chatGPT做的
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 读取初始信息
        String[] initialInfo = scanner.nextLine().split(BLANK);
        int W = Integer.parseInt(initialInfo[0]);  // 矩阵宽度
        int H = Integer.parseInt(initialInfo[1]);  // 矩阵高度
        int X = Integer.parseInt(initialInfo[2]);  // 初始位置x坐标
        int Y = Integer.parseInt(initialInfo[3]);  // 初始位置y坐标
        int SX = Integer.parseInt(initialInfo[4]); // 初始速度x分量
        int SY = Integer.parseInt(initialInfo[5]); // 初始速度y分量
        int T = Integer.parseInt(initialInfo[6]);  // 经过的时间

        char[][] arrays = new char[H][W];  // 存储矩阵信息
        for (int i = 0; i < H; i++) {
            arrays[i] = scanner.nextLine().toCharArray();
        }

        int dx = SX, dy = SY; // 水平和垂直方向的速度
        int x = X, y = Y;     // 当前位置

        int count = 0;  // 经过的1的个数
        for (int t = 0; t <= T; t++) {  // 包括初始位置所在的时间单位
            if (arrays[y][x] == '1') {
                count++;
            }
            // 判断是否会发生镜面反射，是的话反转方向
            dx = (x + dx < 0 || x + dx >= W) ? -dx : dx;
            dy = (y + dy < 0 || y + dy >=H) ? -dy : dy;

            //更新位置
            x += dx;
            y += dy;
        }
        System.out.println(count);
    }
}